﻿using System;
using System.Diagnostics;

namespace Smart.Model
{
    public static class Log
    {
        public static void Trace(string msg)
        {
            UnityEngine.Debug.Log(msg);
        }

        [Conditional("EnableLog")]
        public static void Warning(string msg)
        {
            UnityEngine.Debug.LogWarning(msg);
        }

        [Conditional("EnableLog")]
        public static void Info(string msg)
        {
#if UNITY_EDITOR
            UnityEngine.Debug.Log($"<color=#cd5e3c>{msg}</color>");
#else
            UnityEngine.Debug.Log(msg);
#endif
        }

        public static void Error(Exception e)
        {
            UnityEngine.Debug.LogError(e.ToString());

#if ILRuntime
            if (e is ILRuntime.Runtime.Intepreter.ILRuntimeException ilEx)
            {
                Error(ilEx.Data["Message"].ToString());
                Error(ilEx.Data["StackTrace"].ToString());
            }
#endif
        }

        public static void Error(string msg)
        {
            UnityEngine.Debug.LogError(msg);
        }

        [Conditional("EnableLog")]
        public static void Debug(string msg)
        {
            UnityEngine.Debug.Log(msg);
        }

        public static void Msg(object obj)
        {
            //Debug(Dumper.DumpAsString(obj));
        }
    }
}
